﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using com.creditos.bl.interfaces.liclSolcred;
using com.creditos.be.liclSolcred;
using com.creditos.be.liclVerifica;
using com.creditos.dao.sql.liclSolcred;
using com.creditos.be.liclUtil;
using com.creditos.dao.liclVerifica;
using com.creditos.dao.liclBases;

namespace com.creditos.bl.liclSolcred
{
    [ServiceBehavior(Name = "SolicitudBL",
 Namespace = "http://com.creditos.bl.interfaces.liclSolcred",
 ConcurrencyMode = ConcurrencyMode.Multiple,
 InstanceContextMode = InstanceContextMode.PerSession,
 IncludeExceptionDetailInFaults = true)]
    public class SolicitudBL : ISolicitudBL
    {

        #region ISolicitudBL Members

        public double GuardarSolicitud(SolicitudBE oSolicitudBE)
        {
            try
            {
                double nroSolicitud = SolicitudDAO.GuardarSolicitud(oSolicitudBE);
                return nroSolicitud;

            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
        }
     
        public SolicitudBE BuscarSolicitudxNumero(SolicitudBE oSolicitud)
        {
            try
            {
                SolicitudBE oSolicitudEncontrada = SolicitudDAO.BuscarSolicitudxNumero(oSolicitud);
                return oSolicitudEncontrada;

            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
        }

        public int NumeroSolicitudesRegistradas(ClienteBE oClienteBE)
        {
            try
            {
                int oNumeroSolicitudes = SolicitudDAO.NumeroSolicitudesRegistradas(oClienteBE);
                return oNumeroSolicitudes;

            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
        }

        public List<ClienteBE> BuscarCliente(ClienteBE oClienteBE)
        {
            List<ClienteBE> lst = new List<ClienteBE>();
            try
            {
                lst = ClienteDAO.ListarCliente(oClienteBE);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }

        public Tasa CalcularTasa(SolicitudBE oSolicitud)
        {
            try
            {
                Tasa oTasaCalculada = SolicitudDAO.CalcularTasa(oSolicitud);
                return oTasaCalculada;

            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
        }

        public void ActualizarEstadoSolicitud(SolicitudBE oSolicitud)
        {
            try
            {
                SolicitudDAO.ActualizarEstadoSolicitud(oSolicitud);                
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
        }

        public List<ProspectoBE> ActualizarProspecto(ProspectoBE oProspecto)
        {
            List<ProspectoBE> lst = new List<ProspectoBE>();
            try
            {
                lst = SolicitudDAO.ActualizarProspecto(oProspecto);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
            
        }

        public List<ParametrosBasicosBE> ListarVariables()
        {
            List<ParametrosBasicosBE> lst = new List<ParametrosBasicosBE>();
            try
            {
                lst = ParametrosBasicosDAO.Listar();
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }


        public List<ParametrosBasicosBE> ActualizarParametroBasico(ParametrosBasicosBE oParametrosBasicos)
        {
            List<ParametrosBasicosBE> lst = new List<ParametrosBasicosBE>();
            try
            {
                lst = ParametrosBasicosDAO.ActualizarParametroBasico(oParametrosBasicos);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
            
        }

        public void ActualizarParametroBasicoVariable(List<ParametrosBasicosBE> lstParametrosBasicos)
        {
            try
            {
                ParametrosBasicosDAO.ActualizarParametroBasicoVariable(lstParametrosBasicos);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            
        }

        public List<ParametrosBasicosBE> ListarResumenParametrosBasicos()
        {
            List<ParametrosBasicosBE> lst = new List<ParametrosBasicosBE>();
            try
            {
                lst = ParametrosBasicosDAO.ListarResumenParametrosBasicos();
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }

        public List<EstrategiasCreditoBE> ListarEstrategiasCredito(EstrategiasCreditoBE oEstrategias)
        {
            List<EstrategiasCreditoBE> lst = new List<EstrategiasCreditoBE>();
            try
            {
                lst = EstrategiasCreditoDAO.ListarEstrategiasCredito(oEstrategias);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }

        public List<EstrategiasCreditoBE> CargarListaPlantillaPorTipo(int tipoPlantilla)
        {
            List<EstrategiasCreditoBE> lst = new List<EstrategiasCreditoBE>();
            try
            {
                lst = EstrategiasCreditoDAO.CargarListaPlantillaPorTipo(tipoPlantilla);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }

        public List<EstrategiasCreditoBE> ActualizarEstrategia(EstrategiasCreditoBE oEstrategias)
        {
            List<EstrategiasCreditoBE> lst = new List<EstrategiasCreditoBE>();
            try
            {
                lst = EstrategiasCreditoDAO.ActualizarEstrategia(oEstrategias);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }

        public List<CentralRiesgoBE> ObtenerListaPoliticaCredito(CentralRiesgoBE oCentral)
        {
            List<CentralRiesgoBE> lst = new List<CentralRiesgoBE>();
            try
            {                
                lst = CentralRiesgoDAO.ObtenerListaPoliticaCredito(oCentral);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }

        public List<BandejaVerificacionBE> ObtenerListaTipoVerificacion()
        {
            List<BandejaVerificacionBE> lst = new List<BandejaVerificacionBE>();
            try
            {                
                lst = BandejaVerificacionDAO.ObtenerListaTipoVerificacion();                
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }

        public List<BandejaVerificacionBE> ObtenerListaVerificacionPendiente(BandejaVerificacionBE oVerificacion)
        {
            List<BandejaVerificacionBE> lst = new List<BandejaVerificacionBE>();
            try
            {
                lst = BandejaVerificacionDAO.ObtenerListaVerificacionPendiente(oVerificacion);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }


        public List<BandejaVerificacionBE> ActualizarVerificacionDomicilioFisica(BandejaVerificacionBE oVerificacion)
        {
            List<BandejaVerificacionBE> lst = new List<BandejaVerificacionBE>();
            try
            {
                lst = BandejaVerificacionDAO.ActualizarVerificacionDomicilioFisica(oVerificacion);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }

        public List<BandejaVerificacionBE> ActualizarVerificacionTrabajoFisica(BandejaVerificacionBE oVerificacion)
        {
            List<BandejaVerificacionBE> lst = new List<BandejaVerificacionBE>();
            try
            {
                lst = BandejaVerificacionDAO.ActualizarVerificacionTrabajoFisica(oVerificacion);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }

        public List<BandejaVerificacionBE> ObtenerDatosIntegranteVerificacion(BandejaVerificacionBE oVerificacion)
        {
            List<BandejaVerificacionBE> lst = new List<BandejaVerificacionBE>();
            try
            {
                lst = BandejaVerificacionDAO.ObtenerDatosIntegranteVerificacion(oVerificacion);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }

        public List<ApruebaBE> ObtenerListaSolicitudesXAprobar(ApruebaBE oAprueba)
        {
            List<ApruebaBE> lst = new List<ApruebaBE>();
            try
            {
                lst = SolicitudDAO.ObtenerListaSolicitudesXAprobar(oAprueba);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }


        public List<ApruebaBE> ObtenerListaResultadoReglas(ApruebaBE oAprueba)
        {
            List<ApruebaBE> lst = new List<ApruebaBE>();
            try
            {
                lst = SolicitudDAO.ObtenerListaResultadoReglas(oAprueba);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }

        public void AprobarSolicitudCredito(ApruebaBE oAprueba)
        {            
            try
            {
                SolicitudDAO.AprobarSolicitudCredito(oAprueba);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }            
        }

        public List<EstrategiasCreditoBE> ObtenerEstrategia(EstrategiasCreditoBE oEstrategias)
        {
            List<EstrategiasCreditoBE> lst = new List<EstrategiasCreditoBE>();
            try
            {
                lst = EstrategiasCreditoDAO.ObtenerEstrategia(oEstrategias);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;
        }

        public List<ParametrosBasicosBE> ObtenerParametroBasico(ParametrosBasicosBE oParametrosBasicos)
        {
            List<ParametrosBasicosBE> lst = new List<ParametrosBasicosBE>();
            try
            {
                lst = ParametrosBasicosDAO.ObtenerParametroBasico(oParametrosBasicos);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;

        }

        public List<ParametrosBasicosBE> ObtenerParametroBasicoVariable(ParametrosBasicosBE oParametrosBasicos)
        {
            List<ParametrosBasicosBE> lst = new List<ParametrosBasicosBE>();
            try
            {
                lst = ParametrosBasicosDAO.ObtenerParametroBasicoVariable(oParametrosBasicos);
            }
            catch (Exception oEx)
            {
                FaultReason oErr = new FaultReason(oEx.Message);
                throw new FaultException(oErr);
            }
            return lst;

        }



        #endregion

     
    }
}
